﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ASPLanchonete.classes;
using ASPLanchonete.controller;
using ASPLanchonete.Funcoes;

namespace ASPLanchonete.Telas
{
    public partial class FuncionarioView : System.Web.UI.Page
    {
        FuncionarioController funcionarioController = new FuncionarioController();
        CargoController cargoController = new CargoController();
        Funcionario funcionario = new Funcionario();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["TipoUsuario"] == null || !ControleAcessoTela.ConfirmaAcessoTela("FuncionarioView", Session["TipoUsuario"]))
                Response.Redirect("~/Default.aspx");


            ((SiteCadastro)Page.Master).btnSalvar.Click += new EventHandler(Salvar);
            ((SiteCadastro)Page.Master).btnPesquisa.Click += new EventHandler(Pesquisar);
            ((SiteCadastro)Page.Master).btnLimpar.Click += new EventHandler(LimparCampos);

            if (!IsPostBack)
            {
                IList<Cargo> cargos = cargoController.Recuperar();

                drdListaTipoCargo.Items.Add(new ListItem("Selecione", "0"));
                foreach (Cargo cargo in cargos)
                {
                    drdListaTipoCargo.Items.Add(new ListItem(cargo.NomeCargo, cargo.Id.ToString()));
                }
            }
        }

        protected void ExibeMensagem(string msg)
        {
            ((SiteCadastro)Page.Master).txtResultado.Text = msg;
        }

        protected void Salvar(object sender, EventArgs e)
        {
            string msg = "";
            try
            {
                funcionario = new Funcionario();
                funcionario.Id = Convert.ToInt32(txtCodigo.Text);
                funcionario.NomeFuncionario = txtFuncionario.Text;
                funcionario.DataNascimento = DateTime.Parse(txtDataNascimento.Text);
                funcionario.TelefoneResidencial = txtTelefoneResidencial.Text;
                funcionario.TelefoneCelular = txtTelefoneCelular.Text;
                funcionario.Email = txtEmail.Text;
                funcionario.IdCargo = Int32.Parse(drdListaTipoCargo.SelectedValue);
                funcionario.Ativo = ckbAtivo.Checked;

                msg = funcionarioController.Salvar(funcionario);
                txtCodigo.Text = funcionario.Id.ToString();
            }
            catch (Exception ex)
            {
                msg = "Erro: " + ex.Message.ToString();
            }
            finally
            {
                ((SiteCadastro)Page.Master).txtPesquisaCodigo.Text = null;
                ExibeMensagem(msg);
            }
        }

        protected void Pesquisar(object sender, EventArgs e)
        {
            if (ValidaCamposPesquisa())
                LimparCampos(sender, e);
            else
            {
                try
                {
                    int id = Convert.ToInt32(((SiteCadastro)Page.Master).txtPesquisaCodigo.Text);
                    funcionario = new Funcionario();
                    funcionario = funcionarioController.PesquisarPorId(id);
                    if (funcionario == null)
                        LimparCampos(sender, e);
                    else
                    {
                        RedefinirCampos();
                    }
                }
                catch (Exception ex)
                {
                    LimparCampos(sender, e);
                    ExibeMensagem(ex.ToString());
                }
            }
        }

        private bool ValidaCamposPesquisa()
        {
            if (((SiteCadastro)Page.Master).txtPesquisaCodigo == null || ((SiteCadastro)Page.Master).txtPesquisaCodigo.Text.Equals("") || ((SiteCadastro)Page.Master).txtPesquisaCodigo.Text.Equals("0"))
                return true;
            else
                return false;
        }

        private void LimparCampos(object sender, EventArgs e)
        {
            ((SiteCadastro)Page.Master).txtPesquisaCodigo.Text = null;
            ((SiteCadastro)Page.Master).txtResultado.Text = null;
            txtCodigo.Text = "0";
            txtFuncionario.Text = null;
            txtDataNascimento.Text = null;
            txtTelefoneResidencial.Text = null;
            txtTelefoneCelular.Text = null;
            txtEmail.Text = null;
            drdListaTipoCargo.SelectedIndex = 0;
        }

        private void RedefinirCampos()
        {
            ((SiteCadastro)Page.Master).txtPesquisaCodigo.Text = null;
            ((SiteCadastro)Page.Master).txtResultado.Text = null;
            txtCodigo.Text = funcionario.Id.ToString();
            txtFuncionario.Text = funcionario.NomeFuncionario;
            txtDataNascimento.Text = funcionario.DataNascimento.ToString();
            txtTelefoneResidencial.Text = funcionario.TelefoneResidencial.ToString();
            txtTelefoneCelular.Text = funcionario.TelefoneCelular.ToString();
            txtEmail.Text = funcionario.Email;
            drdListaTipoCargo.SelectedValue = funcionario.IdCargo.ToString();
            ckbAtivo.Checked = funcionario.Ativo;
        }
    }
}